/*
 * @(#)org.example.netty.handler 2020/4/3/0003
 *
 * Copy Right@ 人人译视界
 */


package org.example.netty.handler;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ByteToMessageDecoder;

import java.util.List;

/**
 * <pre>
 * @author tuwei
 *
 * @version 0.9
 *
 * 修改版本: 0.9
 * 修改日期: 2020/4/3/0003
 * 修改人 :  tuwei
 * 修改说明: 初步完成
 * 复审人 ：
 * </pre>
 */
public class MyByteToLongDecoder extends ByteToMessageDecoder {
	/**
	 *
	 * @param ctx
	 * @param in——入站的buf
	 * @param out——将解码后的数据，传递给下一个handler
	 * @throws Exception
	 */
	@Override
	protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
		// 需要判断当前缓存中的可读字节数大于8(Long类型长度)才可以读
		/**
		 * 如果客户端传入"abcdefghijklmnop"，16字节，则以下方法会往list中放入两次值如下：
		 * abcdefgh
		 * ijklmnop
		 */
		if (in.readableBytes() >= 8) {
			out.add(in.readLong());
		}
	}
}
